package IOStream.ZipStream;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 * ClassName:Dome002
 * Package:IOStream.ZipStream
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/3/4-0:53
 * @Version:v1.0
 */
public class Dome002 {
    /**压缩流
     * 压缩的本质：把每一个(文件/文件夹)看成ZipEntry对象放到压缩包中
     *
     * 把E:\aaa\b.txt打包成一个压缩包*/
    public static void main(String[] args) throws IOException {
        //创建File对象表示要压缩的文件
        File src= new File("E:\\aaa\\b.txt");
        //创建File对象表示压缩包的位置
        File dest = new File("E:\\aaa");
        toZip(src,dest);
    }
    /*
    * 作用：压缩
    * 参数一：表示要压缩的文件
    * 参数二：表示要压缩包的位置*/
    public static void toZip(File src,File dest) throws IOException {
        //创建压缩流去关联压缩包
        ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(new File(dest,"a.zip")));
        //创建zipEntry对象,表示压缩包里面的每一个文件和文件夹
        //参数：压缩包里面的路径
        ZipEntry entry =new ZipEntry("b.txt");
        //把ZipEntry对象放到文件当中
        zos.putNextEntry(entry);
        //把文件中的数据写到压缩包中
        FileInputStream fis =new FileInputStream(src);
        int b;
        while ((b=fis.read())!=-1){
            zos.write(b);
        }
        zos.closeEntry();
        zos.close();

    }

}
